关注手机端
关注微信公众号
在本期中,我们将探讨最重要的因素-设计工具流程,使工程团队可以利用这些设备的强大功能。事实证明,可编程逻辑的灵活性和强大功能既是其最大的资产,也是其最大的局限性。FPGA不是处理器,即使它们最吸引人的用途之一是加速计算。具有纯软件背景的工程师通常无法理解使用这些器件所涉及的复杂性,以及获得足够的熟练程度以在能力范围内使用FPGA所需的漫长学习曲线。与传统的冯·诺依曼处理器不同,FPGA不是软件可编程的,至少不是传统意义上的。
要充分利用FPGA的优势,就需要设计数字逻辑,尽管有数十年的发展,但我们还没有达到在设计过程中至少没有一定程度的硬件专业知识就可以最佳地使用FPGA的地步。但是,那句话。首先,经过多年处理庞大(且不断增加)的FPGA设计复杂性之后,FPGA供应商提出了一些缓解该问题的技巧。最简单,最重要的是使用预先设计的单功能加速器和应用程序。对于某些常见的应用,FPGA公司已经为您完成了设计–专家们对逻辑进行了调整和调整,以实现最佳性能,功耗和利用率。如果您碰巧正在做这些应用程序之一,那么您甚至可能根本不知道自己正在使用FPGA。它只是静静地坐在后台,使您的系统中的一切都变得更好。在以后的文章中,我们将讨论这些设备的市场营销和分销时,将对此进行更详细的介绍。
减少所需设计专业知识的第二种方法是提高设计抽象水平。通过创建允许在更高级别进行设计的工具,FPGA供应商减少了在寄存器传输级别进行详细设计的需求,从而大大简化了流程。我们将在本文后面详细讨论。
但是,不管实际情况如何,当今的FPGA公司都主要针对三个不同的受众或专业领域。具有HDL技能的数字硬件工程师,软件工程师和(最近)AI / ML工程师。这些用户组中的每一个都将从FPGA技术的应用中受益匪浅,但是为每个用户组提供他们利用FPGA所需的工具是一项艰巨的任务。
为了展现FPGA工具和IP的广阔前景,我们应该从核心开始-唯一定义FPGA的部分,即查找表(LUT)结构。在现代,FPGA的发展就像瑞士军刀或智能手机一样。SAK的“刀”部分仅占设备功能的一小部分,但我们仍称其为“刀”。智能手机的“电话”功能在区分设备方面正变得越来越小,但我们仍将其称为“电话”。而且,FPGA中的LUT架构现在仅是这些惊人器件所提供价值的一小部分,但是LUT架构是唯一赋予FPGA强大功能的一件事。
赛灵思指出,他们的“ ACAP”设备根本不需要配置或甚至不使用LUT结构即可引导和使用其Versal设备。这是宣称Versal器件不是FPGA而是一个新类别的基础。但是,所有这些设备的功能和任务都有足够的共性来比较它们,并且Versal不太可能在完全不使用FPGA架构的许多应用中找到家。
一切始于HDL设计
FPGA域中最低级别的设计工具是布局布线。此过程获取互连LUT(以及这些LUT的配置)的网表,以(希望)接近最佳的方式将其排列在芯片上,并通过可编程互连结构进行所需的连接。布局布线是FPGA实现的核心。随着设备变得越来越大,两个趋势影响了布局和布线过程。首先,专用于互连(相对于逻辑)的芯片部分必须增加,以便成功进行大型设计。当然,FPGA公司不喜欢为路由分配大量的硅,因为这意味着其设备上的逻辑更少。您永远不会看到供应商吹嘘他们提供的大量路由资源,但是LUT的数量通常处于中心位置。因此,最大化LUT和最小化布线是最重要的问题。
为了最大程度地减少路由资源消耗的硅空间,FPGA公司在芯片设计期间进行了详尽的介绍,他们在芯片开发的众多迭代中放置和路由了无数的实际设计,以找到最平衡的平衡点。用户设计将能够利用芯片上大量逻辑资源,而不会在布线过程中失败。如果他们分配的路由资源太少,则芯片上的大量逻辑将无法使用。过去曾发生过这种情况,因为FPGA公司发布的芯片通常只能以60%左右的利用率进行布线,从而使这些芯片远远低于其在现实世界中宣传的容量。相反,如果为路由分配的硅过多.
显然,布局和布线算法执行得越好,完成大多数设计所需的布线资源就越少。因此,布局和路线的性能一直影响到设备本身的设计。
影响布局布线的第二个趋势是逻辑路径延迟的主要因素已从“逻辑”延迟变为“互连”延迟。这对设计流程产生了深远的影响,因为逻辑综合过程不再能够独立于与路由/互连相关的延迟进行时序分析。这意味着必须将逻辑综合和布局布线紧密地结合在一起-位置信息确定路由延迟,并且将这些路由延迟反馈回来,以便通过综合在构建逻辑路径时做出不同的决策。在当今世界中,逻辑综合以及布局和路线通常是通过一个(通常是迭代的)步骤捆绑在一起的。
这三家公司中的每家公司都提供了强大的综合和布局布线工具集,这些工具集是传统FPGA用户的基础-传统的FPGA用户是上述“具有HDL技能的数字硬件工程师”。
Xilinx在2012年彻底改写了当时老化的ISE工具套件,从而创建了Vivado。七年后,Vivado已经很好地发展成为一个相对健壮,可靠的平台,其架构通常能够很好地跟上FPGA业务的快速升级步伐。逻辑综合和布局布线算法是最先进的,Vivado在当今的庞大设计中在编译时间和内存占用方面表现出色。Vivado可通过TCL进行自定义,从而提供大量控制和可自定义性。Vivado还包含一个模拟器和一个IP集成工具。
赛灵思在其工具和FPGA架构之间进行了广泛的迭代,以在路由与逻辑资源方面找到最有利的位置,从而使他们的设备能够利用其工具实现一致的高利用率,并在时序收敛方面取得了可观的成果。在这三个供应商中,赛灵思在布局和时序收敛方面是最“老派”,而英特尔和Achronix在其设备架构中都采取了一些新颖的架构步骤,以帮助实现当今大型复杂设计的时序收敛。
但是,赛灵思在FPGA领域也领导了高级综合(HLS)领域,而且Vivado HLS是(迄今为止,我们相信)业界最常用的HLS工具,支持C / C ++为硬件设计人员提供门控流程寻找超出寄存器传输级别(RTL)所提供的生产力。赛灵思HLS工具的高采用率还有助于解决时序收敛问题,因为从HLS工具自动生成的RTL往往比手写RTL表现得更好。
英特尔的Quartus Prime Pro是Altera Quartus设计工具套件的演进,在过去的二十年中,它们一直是FPGA设计的旗舰。正如我们前面提到的,英特尔在几代之前使用所谓的“ HyperFlex”架构更新了其芯片–本质上覆盖了带有小型寄存器的设备,这些寄存器有助于通过这些工具对关键逻辑路径进行即时重新定时。这有助于简化复杂设计上的时序收敛,这可能会牺牲一些整体性能。
最近,英特尔在Quartus中添加了一种称为“分形综合”的可选策略,用于诸如算术运算量较大或乘数较小的机器学习算法之类的设计。该公司表示,微软在其“ Brainwave”项目(为Bing搜索提供支持)中使用了Fractal Synthesis,以将Stratix 10器件的高性能填充到92%。最新的另一项新增功能是Design Assistant设计规则检查(DRC),可帮助查找约束条件和放置的网表中的问题,旨在减少关闭时序所需的迭代。
英特尔比Xilinx晚了参加HLS大会,但现在Quartus套件中包括了英特尔HLS编译器。HLS编译器将未定时的C ++作为输入,并生成针对目标FPGA优化的RTL代码。尽管英特尔的HLS工具在现场的使用率比Xilinx的Vivado HLS少得多,但随着HLS编译器为英特尔One API软件开发平台的“ FPGA”分支提供动力,我们预计将看到相当多的采用。看来,英特尔的HLS实施可能比Xilinx的实施更偏向软件工程师(后者显然是硬件设计师的强大工具)。
Achronix的ACE工具套件依赖于第三方工具进行仿真和综合。ACE套件中包含OEM版本的Synopsys Synplify Pro,它包括高级布局规划和关键路径分析功能,以帮助关闭时序。但是,借助Speedster7t,Achronix通过其新颖的片上网络(NoC)实现采用了独特的时序收敛方法。NoC使设计师能够在不使用逻辑资源的情况下,以高达2GHz的速度在FPGA架构中的任何地方传输数据。这也意味着,与必须专门使用LUT在设备内路由信号的传统FPGA相比,在放置和路由用户设计时,将消耗更少的宝贵FPGA资源。”
由于加速工作负载通常涉及用于多位路径的大量“总线”路由,因此Achronix还引入了基于字节(或半字节)的路由,以进一步改善时序收敛性。如果移动了数据字,并且不需要位交换,则可以使用这些额外的路由资源。
对于他们的HLS入门,Achronix与Mentor合作,后者的Catapult-C可能是市场上最成熟的ASIC HLS工具。Catapult-C具有工业实力,而且价格适中。Catapult-C将允许完整的C / C ++流向Speedster7t FPGA定位-通常的警告是HLS仍然是为硬件工程师设计的工具,用于提高生产率和结果质量,而不是使软件工程师设计硬件的工具。Catapult-C当然应该在5G应用中大放异彩,并在优化加速工作量(如AI推理)方面发挥作用。
软件开发人员的切入点
在过去的二十年中(自Altera推出命运不佳的“ Excalibur”系列以来),许多高端FPGA除了其LUT结构之外,还包含传统的冯·诺依曼处理器。这些处理器的范围从在LUT架构本身中实现的“软”微控制器到具有外围设备的复杂“硬”多核64位处理子系统。这些FPGA符合片上系统(SoC)的标准,并且随着这种发展,设计问题变得更加复杂,因为我们现在需要工具来支持软件工程师来开发在当今FPGA嵌入式处理子系统中运行的应用程序。
多年来,这意味着FPGA SoC项目需要团队中的硬件和软件专家。但是,由于FPGA公司致力于打入其芯片新市场,因此他们努力减少了对HDL /硬件专业知识的依赖。如今,他们正在努力提供软件开发工具套件,这些套件不仅使软件工程师能够开发在嵌入式处理子系统上运行的代码,而且还使这些软件工程师能够创建利用FPGA架构来加速其应用程序的加速器。
正如我们最近所写,Xilinx刚刚发布了他们的Vitis统一平台,该平台旨在使软件工程师(以及使用“ Vitis AI”入口点的AI开发人员)能够加速使用Xilinx设备的应用程序。Xilinx说,Vitis“为加速的主机CPU,嵌入式CPU和混合(主机+嵌入式)应用程序提供了统一的编程模型。除了核心开发工具外,Vitis还提供了一套丰富的硬件加速库,这些库针对Xilinx硬件平台进行了预优化。”
对于“承诺开放源代码和社区参与”的Xilinx(历史上因食用自己的生态系统而享有盛誉的人),Vitis可能代表了其行为和理念的转变。 Xilinx表示,他们所有的硬件加速库都在GitHub上发布,其运行时XRT也已开源。当然,所有这些开源仍然是最终以Xilinx硬件为目标的软件,将其修改为目标竞争对手的设备可能是一项相当大的任务,但是–结合免费提供Vitis的事实,朝着公司正确的方向迈出了巨大的一步,并为非传统用户(如CUDA开发人员)铺了红地毯。
英特尔的One API的设计目标与Xilinx的Vitis相似,但目标却可以理解。由于英特尔的计算产品组合的广度–重铁Xeon处理器,GPU,FPGA,诸如Nervana和Movidius之类的专用AI引擎等–英特尔正在为实现跨软件开发的单入口点制定宏伟的目标英特尔所谓的“ SVMS架构”(标量,向量,矩阵,空间,部署在CPU,GPU,NNP和FPGA中)的范围。英特尔表示,One API“有望通过将数据的DMA从主机传输到FPGA并返回到FPGA来消除FPGA上硬件加速器当前存在的进入障碍,这在Java中非常手动,繁琐且容易出错。基于HDL的设计流程。
英特尔提醒我们注意:“ FPGA开发人员将需要修改其代码,以实现FPGA上的最佳性能,或者使用针对空间FPGA架构进行了预优化的库。软件开发人员必须接受FPGA方面的培训,以实现FPGA特殊架构加速的全部性能优势以及跨架构的可移植性。”
谢谢Intel-wan。我们都渴望接受FPGA方面的培训。
一个API将使用一种称为“数据并行C ++”(DPC ++)的新编程语言以及API调用。一种API将包含针对各种工作负载域的API库,还将包含针对DPC ++定制的增强型分析和调试工具。
使英特尔产品脱颖而出的一项功能是它们在XEON可扩展处理器与FPGA加速器之间的优化的低延迟和缓存一致性UPI(以及将来的CXL)接口。该公司表示,此功能“使虚拟化,AI和大内存数据库等应用程序能够比依靠传统的PCIe连接性更高的性能。”
在使软件开发人员直接利用FPGA加速方面,Achronix与更大,更多样化的竞争对手相比处于劣势。该公司正在通过各种合作伙伴关系开发生态系统,但是他们可能主要针对具有所需硬件专业知识的设计团队,以有效地使用他们的FPGA,以及Achronix生态系统已经具有可靠的预优化解决方案和参考设计的应用程序。
随着AI接管世界……
最近,人工智能已经成为FPGA的新“杀手级应用”。正如我们在前几期中讨论的那样,FPGA具有出色的能力来动态创建针对特定AI推理应用程序的需求量身定制的定制处理引擎。但是,这也创造了一种新的用户– AI / ML工程师。这第三位目标受众带来了自己对工具流程的一组要求,以利用FPGA的功能。这些人需要对TensorFlow,Caffe和其他行业的前端工具的支持,并提供将其转化为针对其问题的合理优化的基于FPGA的解决方案的途径。
作为其Vitis统一软件平台声明的一部分,赛灵思还发布了Vitis AI,这是一个针对(可能会猜到)人工智能和数据科学家的插件。它允许AI模型直接从TensorFlow等标准框架进行编译。Vitis AI实例化了Xilinx在FPGA架构或Versal设备的AI引擎中称为域特定处理单元(DPU)的功能。这种方法的一个关键(且引人注目的)优势是Vitis AI将AI模型编译为DPU的操作代码,因此,无需新的位置和路线,就可以在几分钟甚至几秒钟内下载并运行模型。与大多数将FPGA架构配置作为计划一部分的方法相比,这使得迭代时间和实际工作负载调配变得更加简单和快捷。
英特尔通过OpenVINO工具包的英特尔发行版向AI开发人员的One API采用了类似的方法(实际上,顺序相反)。英特尔的版本为AI开发人员提供了该公司所说的“单个工具包,可加快他们在包括英特尔FPGA在内的多个硬件平台上部署解决方案的速度。英特尔表示,OpnVINO可以使AI开发人员和数据科学家从TensorFlow和Caffe等框架直接进入硬件,而无需任何FPGA知识。
英特尔的解决方案支持各种流行的神经网络,还允许创建自定义网络。它们还包括供FPGA开发人员定制的API,以使其应用程序的引擎变型。该公司表示,通过为应用程序的特定数据流和构建块自定义构建AI引擎,可以实现数量级的性能提升。
定制流程还包括英特尔所谓的AI +,用于除AI外还需要其他功能的应用程序。这使应用程序开发人员可以利用FPGA架构的灵活性来启用(例如)AI +预处理,从而使CPU不必执行业务流程,并减少了总体系统延迟。
Achronix为诸如TensorFlow之类的框架提供了低级的机器学习库功能,并支持了更高级别的框架。它们既支持“覆盖体系结构”,又支持将数据图从高级框架直接映射到FPGA逻辑。该公司表示,“叠加层”是“针对一个或多个ML网络进行了优化的专用应用处理器,其硬件以可重编程逻辑实例化,而特定网络则以在该硬件实例上运行的微代码实现。” 这意味着可以通过更改软件或更改硬件和软件来修改覆盖实现的功能,而直接映射的数据图则需要对FPGA结构进行完全或部分重新配置。
文章来源:内容由「网络交换FPGA」编译自「eejournal」,作者:Kevin Morris,谢谢。